package com.classroommanagesystem.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Knife4jConfig {
    // @Bean
    // public GroupedOpenApi adminApi() {
    //     return GroupedOpenApi.builder()
    //             .group("app-api")
    //             .pathsToMatch("/**")
    //             .build();
    // }
    // @Bean
    // public OpenAPI openAPI() {
    //     return new OpenAPI()
    //             .info(new Info()
    //                     .title("Knife4j整合Swagger3 Api接口文档")
    //                     .description("Knife4j后端接口服务...")
    //                     .version("v1.0.0")
    //                     .contact(new Contact().name("Hva").email("Hva@163.com"))
    //                     .license(new License().name("Apache 2.0").url("http://springdoc.org")));
    // }


    // 全局API信息配置（标题、版本等）
    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("教室管理系统接口文档") // 文档标题
                        .description("基于Knife4j的接口文档，包含管理员、用户、公共模块接口") // 描述
                        .version("v1.0.0") // 版本
                        .contact(new Contact().name("开发者").email("dev@example.com")) // 联系人信息
                        .license(new License().name("Apache 2.0").url("http://springdoc.org"))); // 许可证
    }

    // 1. 管理员接口分组（路径以 /admin 开头）
    @Bean
    public GroupedOpenApi adminApi() {
        return GroupedOpenApi.builder()
                .group("管理员接口") // 分组名称（在文档页面显示）
                .pathsToMatch("/admin/**") // 匹配该分组的接口路径（支持通配符）
                // .pathsToExclude("/admin/login") // 例如排除登录接口
                .build();
    }

    // 2. 用户接口分组（路径以 /user 开头）
    @Bean
    public GroupedOpenApi userApi() {
        return GroupedOpenApi.builder()
                .group("用户接口")
                .pathsToMatch("/user/**")
                .build();
    }

    // 3. 公共接口分组（路径以 /common 开头）
    @Bean
    public GroupedOpenApi commonApi() {
        return GroupedOpenApi.builder()
                .group("公共接口")
                .pathsToMatch("/public/**") // 可同时匹配多个路径
                .build();
    }


}